【iOSDC Japan 2023 レポート】「SwiftUIでの非同期処理データの状態管理を考える」を聞いてきた。
はじめに
年に一度のiOSエンジニアの為のお祭り iOSDC Japan 2023に参加しています。
せっかくなので、参加したセッションのレポートを書きたいと思います。
SwiftUIでの非同期処理データの状態管理を考える
登壇者
- kntkymtさん
概要
みなさんはSwiftUIで非同期処理データの状態管理をどう行なっていますか?
- enumを使う方法: enum DataState { case loading; case success(Value); ... }
- コンポーネントを使う方法: LoadingContent(fetch: fetch) { Content($0) }
などがあると思いますが
- リロード中は前回の結果を表示したい場合
- ページングに対応する場合
等の要件で、微妙に異なるバリエーションがいくつか存在する上、それらの方法にはメリットとデメリットがあります。
パフォーマンス低下を引き起こしていることも...。
このトークは、このような状態管理方法を複数個、実装ケースと共に紹介・考察しそれぞれの方法がどのような実装ケースに適しているかを分析・分類していく内容となっています。
引用: fortee
資料
感想
非同期中のデータ状態は様々な状態があります。
- 成功
- 失敗
- ロード中
- ページング成功
- ページング失敗
- ページングロード中
- プルリフレッシュ成功
- プルリフレッシュ失敗
- プルリフレッシュ中
この状態を管理する方法として、enum
を使用する方法を最初に説明されていました。状態管理のプロパティが一つになり、とても状態がわかりやすくなっていました。
実際にその値を見て、描画する側の実装も紹介されており、よりイメージが膨らませやすかったです。
最後は、enum + コンポーネントによる状態管理の実装例も共有していただき、enumでの状態管理で発生しがちなボイラープレートを解決出来、デザインの統一に効果的とのことです。
改めてどのように状態管理をするのが良いのか考えるキッカケになり、勉強になったセッションでした。
おわりに
状態管理はシンプルな方が良いですね。複雑な箇所がないか今一度確認したいと思います。
iOSDC 2023 レポート関連
Day0
- 「タクシーアプリの多言語対応・ローカライズにおける課題と解決策」を聞いてきた。
- 「Appleにおけるプライバシーの全容を把握する」を聞いてきた。
- 「SwiftUIの進化についていくためにやったこと」を聞いてきた。
- 「SharePlayの歴史と進化 - そしてvisionOSへ」を聞いてきた。
- 「UIKit ベースの Custom UIContentConfiguration API を用いた複雑なカスタムセルの作り方」を聞いてきた。
Day1
- 「TextKit 2 時代の iOS のキーボードとテキスト入力と表示のすべて」を聞いてきた。
- 「PushToTalkで作るトランシーバー」を聞いてきた。
- 「6年間運用したiOSアプリのリアーキテクトについて具体的に解説」を聞いてきた。
- 「Mastering SwiftSyntax」を聞いてきた。
- 「配信アプリのためのリアルタイムプッシュ通知ぼかしの夢 〜低負荷で高速なプライバシー保護を目指して」を聞いてきた。
- 「macOSで自分のカメラを作ってみよう – Core Media IO Extension」を聞いてきた。
- 「なぜ、弊社はFlutterを捨ててネイティブ化(Swift / Kotlin)にコミットしたのか」を聞いてきた。
- 基礎から理解する!来年春までに対応すべきプライバシーの変更点
- 「正規表現を”微分”する!?爆速で自作できる正規表現エンジン」を聞いてきた。
- 「一般的な通信でも使えるバックグランドURLSessionの活用方法」を聞いてきた。